import axios from 'axios'

// 方法1：传入三个参数，一个success和filure回调
// export function request(config,success,failure){
//   //1.创建axios实例
//   const instance = axios.create({
//     baseURL:'http://152.136.185.210:8000/api/w6',
//     timeout:5000
//   })

//   //发送真正的网络请求
//   instance(config)
//   .then(res=>{
//     success(res)
//   })
//   .catch(err=>{
//     console.log(err);
//     failure(err)
//   })
// }


// 方法2：只使用config一个参数
// export function request(config){
//   //1.创建axios实例
//   const instance = axios.create({
//     baseURL:'http://152.136.185.210:8000/api/w6',
//     timeout:5000
//   })

//   //发送真正的网络请求
//   instance(config.baseconfig)
//   .then(res=>{
//     // console.log(res);
//     config.success(res)
//   })
//   .catch(err=>{
//     console.log(err);
//     config.failure(err)
//   })
// }


//方法3.
// export function request(config){
//   return new Promise((reslove,reject)=>{
//     //创建一个axios的实例
//     const instance = axios.create({
//       baseURL:'http://152.136.185.210:8000/api/w6',
//       timeout:5000
//     })
//     //发送真正的网络请求，使用刚刚创建的实例
//     instance(config)
//     .then(res=>{
//       reslove(res)
//     })
//     .catch(err=>{
//       reject(err)
//     })
//   })
// }


//方法4：
// export function request(config){
//   //创建一个axios实例
//   const instance = axios.create({
//     baseURL:'http://152.136.185.210:8000/api/w6',
//     timeout:5000
//   })

//   // 发送真正的网络请求
//   return instance(config)
// }


// 使用axios拦截器
export function request(config){
  //创建一个axios实例
  const instance = axios.create({
    baseURL:'http://152.136.185.210:8000/api/w6',
    timeout:5000
  })

  // axios的拦截器
  // 请求拦截
  instance.interceptors.request.use(config=>{
      console.log(config);
      // 为什么要进行拦截呢？
      // 比如说config中的一些信息不符合服务器的要求,需要对信息进行一些转化
      // 再比如，在发送网络请求的时候，希望在界面中显示一个请求中的图标
      // 再比如，某些网络请求，例如登录，必须携带一些特殊的信息，例如token，这个时候我们进行一次拦截  跳转到登录界面

      // 在处理完请求后，需要及时将请求信息return回去，否则无法正常发送请求
      return config
    },err=>{
      console.log(err);
    });

  // 响应拦截
  instance.interceptors.response.use(res=>{
    console.log(res);
    // 此处拦截完后   处理数据    处理完数据后需要及时将结果return回去   否则在调用这个网络请求实例的地方拿不到数据，  因为被拦截
    return res.data
  },err=>{
    console.log(err);
  })

  // 发送真正的网络请求
  return instance(config)
}